package com.mjf.scala.chapter06

import scala.beans.BeanProperty

/**
 * 类中的属性
 */
object Scala05_TestField {

  def main(args: Array[String]): Unit = {
    // 创建对象
    val std: Student05 = new Student05

    std.name = "lucy"   // 底层是 对象.方法 的方式实现的

    // 通过对象.的方式访问属性
    println(std.name)

    println(std.sex)    // null
  }

}

class Student05 {

  // 在Scala语言中，属性、方法、类默认的修饰是public
  // 但是public 不能显示加,类似Java中的default
  // 底层生成的字节码文件，默认对属性用private进行修饰，提供了公开的获取\设置属性值的方法
  // 作用1：符合面向对象的封装特性
  var name = "jack"

  // 如果想生成符合JavaBean规范的get\set方法，需要在属性上加一个注解@BeanProperty
  // 作用2：对一些框架进行支持
  @BeanProperty
  var age = 18

  // 如果想给属性默认值，需要在声明的时候，赋 _
  var sex: String = _   // String类型的默认值为null

}